
import Config.FILE_PATH
import Config.FILE_SUFFIX_NAME
import Config.FILE_TYPE_SUFFIX
import java.io.File
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import java.time.LocalDate

/**
 * TomorrowFileSaver类负责将文本保存到文件中，文件名基于明天的日期
 * 继承自TextSaver接口，实现了saveText方法，用于将指定的文本内容保存到指定的文件中
 */
class TomorrowFileSaver : TextSaver {

    /**
     * 保存文本到文件中
     * 根据配置的文件路径、文件名后缀和文件类型后缀，生成完整的文件路径和文件名，然后将文本写入到该文件中
     *
     * @param text 要保存的文本内容
     */
    override fun saveText(text: String) {
        val fullFilePath: Path = Paths.get(FILE_PATH.toString(), File.separatorChar.toString(), getFullFileName())
        Files.writeString(fullFilePath, text)
    }

    /**
     * 获取明天日期的字符串表示
     * 用于生成文件名的一部分，表示文件是为明天准备的
     *
     * @return 明天日期的字符串，格式为月-日
     */
    private fun getTomorrowString(): String {
        // 获取明天的日期
        var tomorrow: LocalDate = LocalDate.now().plusDays(1)
        return tomorrow.monthValue.toString() + "-" + tomorrow.dayOfMonth;
    }

    /**
     * 构建完整的文件名
     * 结合明天的日期、配置的文件名后缀和文件类型后缀，生成完整的文件名
     *
     * @return 完整的文件名，用于保存文本
     */
    private fun getFullFileName(): String {
        return getTomorrowString() + FILE_SUFFIX_NAME + FILE_TYPE_SUFFIX
    }

}
